x86 hpet: fix irq_vector[] update of c/s 19419
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 1 Apr 2009 10:53:15 +0000 (11:53 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 1 Apr 2009 10:53:15 +0000 (11:53 +0100)
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/hpet.c

index 97d09793057c91ae02437d2bb4f7d0624ac5e5d5..ea7c5be1449bde12a9cc4e0faa97ffe7076fecbe 100644 (file)
@@ -343,20 +343,16 @@ static int hpet_setup_msi_irq(unsigned int vector)
 
 static int hpet_assign_irq(struct hpet_event_channel *ch)
 {
-    unsigned int vector;
+    int vector;
 
-    vector = assign_irq_vector(AUTO_ASSIGN_IRQ);
-    if ( !vector )
-        return -EINVAL;
+    if ( (vector = assign_irq_vector(AUTO_ASSIGN_IRQ)) < 0 )
+        return vector;
 
-    irq_vector[vector] = vector;
-    vector_irq[vector] = vector;
     vector_channel[vector] = ch - &hpet_events[0];
 
     if ( hpet_setup_msi_irq(vector) )
     {
-        irq_vector[vector] = 0;
-        vector_irq[vector] = FREE_TO_ASSIGN_IRQ;
+        free_irq_vector(vector);
         vector_channel[vector] = -1;
         return -EINVAL;
     }